﻿#ifndef PARAMETERSQLDB_H
#define PARAMETERSQLDB_H

#include <QObject>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QQueue>
#include <QMutex>
#include <QCoreApplication>
#include <QDebug>

class SQLitedPool{
public:
    static SQLitedPool* getInstance()
    {
        static SQLitedPool instance;
        return &instance;
    }

    SQLitedPool()
    {
        resetDataBase();
    }

    void resetDataBase()
    {
        if(m_ProcessDB)
        {
            m_ProcessDB->close();

            m_ProcessDB->removeDatabase("ProcessDB-connect01");

            delete m_ProcessDB;
            m_ProcessDB = NULL;
        }

        m_ProcessDB = new QSqlDatabase();

        *m_ProcessDB = QSqlDatabase::addDatabase("QSQLITE",QString("ProcessDB-sqlite"));

        // QString path = QCoreApplication::applicationDirPath();
        // qDebug()<<"Cpp:PATH:"<<path;

        m_ProcessDB->setDatabaseName("./ProcessParamter.db");
        if(!m_ProcessDB->open())
        {
            qDebug()<<"Cpp:m_ProcessDB->lastError():"<<m_ProcessDB->lastError().text().toUtf8().data();
        }
        else
        {
            qDebug()<<"Cpp:连接数据库 : ProcessParamter.db 成功";
        }
        qDebug()<<"Cpp:重置数据库";
    }

    QSqlDatabase* getDataBase()
    {
        return m_ProcessDB;
    }


    QSqlDatabase* m_ProcessDB = nullptr;
};



class ParameterSQLDB : public QObject
{
    Q_OBJECT
public:
    ParameterSQLDB(QObject *parent = nullptr);
    ~ParameterSQLDB();

    // 连接数据库
    bool connectToDataBase(QSqlDatabase* Db);

    // 执行查询语句
    bool execSql(const QString& sql);

    // 执行返回查询结果
    QSqlQuery* execSql_result(const QString& sql);

signals:
};

#endif // PARAMETERSQLDB_H
